package cn.jmi.jmiopenatommanagementsystem.controller;

import cn.jmi.jmiopenatommanagementsystem.pojo.ResponseMessage;
import cn.jmi.jmiopenatommanagementsystem.pojo.User;
import cn.jmi.jmiopenatommanagementsystem.service.UserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 用户管理控制器
 * 处理用户相关的HTTP请求，包括用户的增删改查操作
 */
@Slf4j
@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;

    /**
     * 添加用户
     * @param user 用户信息，通过请求体传递
     * @return 包含操作结果和用户信息的响应消息
     */
    @PostMapping("/addUser")
    public ResponseMessage<User> addUser(@RequestBody User user){
        try {
            // 调用服务层添加用户
            User newUser = userService.addUser(user);
            if (newUser != null) {
                // 记录成功日志
                log.info("用户增加成功{}",user.toString());
                return ResponseMessage.success(newUser);
            } else {
                return ResponseMessage.error("用户添加失败");
            }
        } catch (Exception e) {
            // 捕获异常并返回错误信息
            return ResponseMessage.error("添加用户时发生错误: " + e.getMessage());
        }
    }

    /**
     * 获取所有用户列表
     * @return 包含所有用户列表的响应消息
     */
    @GetMapping("/allUser")
    public ResponseMessage<List<User>> getAllUser(){
        // 调用服务层查询所有用户
        List<User> userList =userService.findAllUser();
        log.info("查找所有用户成功");
        return ResponseMessage.success(userList);
    }

    /**
     * 更新用户信息
     * @param user 要更新的用户信息
     * @return 包含操作结果和更新后用户信息的响应消息
     */
    @PostMapping("/updateUser")
    public ResponseMessage<User> updateUser(@RequestBody User user){
        try {
            // 调用服务层更新用户
            User newUser= userService.updateUser(user);
            if (newUser != null) {
                log.info("更新用户成功{}",user.toString());
                return ResponseMessage.success(newUser);
            }else {
                return ResponseMessage.error("用户更新失败");
            }
        }catch (Exception e){
            return ResponseMessage.error("更新用户时发生错误: " + e.getMessage());
        }
    }

    /**
     * 删除用户
     * @param user 要删除的用户信息
     * @return 包含操作结果的响应消息
     */
    @PostMapping("/deleteUser")
    public ResponseMessage<String> deleteUser(@RequestBody User user){
        try {
            // 调用服务层删除用户
            if(userService.deleteUser(user)){
                return ResponseMessage.success("删除用户成功");
            }else {
                return ResponseMessage.error("删除用户失败");
            }
        }catch (Exception e){
            // 记录异常日志
            log.info("删除用户发生错误{}",e.getMessage());
            return ResponseMessage.error("删除用户失败");
        }
    }
    /**
     * 更具用户id查询数据
     * @param id 要查询的用户的id
     * @return 包含操作结果的响应消息
     */
    @GetMapping("/getUserById")
    public ResponseMessage<User> getUserById(@RequestParam Long id){
        try{
            User user = userService.findUserById(id);
            if (user != null) {
                return ResponseMessage.success(user);
            }else {
                return ResponseMessage.error("获取失败");
            }
        }catch (Exception e){
            log.info("查找用户发生错误{}",e.getMessage());
            return ResponseMessage.error("查找用户失败");
        }

    }

}